14 research outputs found

    Programming and Proving with Distributed Protocols

    Get PDF
    Distributed systems play a crucial role in modern infrastructure, but are notoriously difficult to implement correctly. This difficulty arises from two main challenges: (a) correctly implementing core system components (e.g., two-phase commit), so all their internal invariants hold, and (b) correctly composing standalone system components into functioning trustworthy applications (e.g., persistent storage built on top of a two-phase commit instance). Recent work has developed several approaches for addressing (a) by means of mechanically verifying implementations of core distributed components, but no methodology exists to address (b) by composing such verified components into larger verified applications. As a result, expensive verification efforts for key system components are not easily reusable, which hinders further verification efforts. In this paper, we present Disel, the first framework for implementation and compositional verification of distributed systems and their clients, all within the mechanized, foundational context of the Coq proof assistant. In Disel, users implement distributed systems using a domain specific language shallowly embedded in Coq and providing both high-level programming constructs as well as low-level communication primitives. Components of composite systems are specified in Disel as protocols, which capture system-specific logic and disentangle system definitions from implementation details. By virtue of Disel’s dependent type system, well-typed implementations always satisfy their protocols’ invariants and never go wrong, allowing users to verify system implementations interactively using Disel’s Hoare-style program logic, which extends state-of-the-art techniques for concurrency verification to the distributed setting. By virtue of the substitution principle and frame rule provided by Disel’s logic, system components can be composed leading to modular, reusable verified distributed systems. We describe Disel, illustrate its use with a series of examples, outline its logic and metatheory, and report on our experience using it as a framework for implementing, specifying, and verifying distributed systems

    Quality of life assessment in companion animals: what, why, who, when and how

    Get PDF
    Quality of life is a commonly used phrase in veterinary medicine. It describes a complex evaluation that may be difficult for animals to perform, and the phrase “happiness” may be a more crude but useful approximation. Quality of life assessments should ideally be an integral part of our decision making, and should encompass evaluation of aspects of a pet’s life beyond just its health. Assessments should aim both to evaluate an animal’s quality of life, and to look for ways in which it might be improved. This article will discuss the challenges of assessing quality of life in companion animals, and will review the range of different methods available for assessment of quality of life in cats and dogs

    Icing: Supporting Fast-Math Style Optimizations in a Verified Compiler

    Get PDF
    Verified compilers like CompCert and CakeML offer increasingly sophisticated optimizations. However, their deterministic source semantics and strict IEEE 754 compliance prevent the verification of ``fast-math'' style floating-point optimizations. Developers often selectively use these optimizations in mainstream compilers like GCC and LLVM to improve the performance of computations over noisy inputs or for heuristics by allowing the compiler to perform intuitive but IEEE 754-unsound rewrites

    Processing and microstructure characterisation of oxide dispersion strengthened Fe-14Cr-0.4Ti-0.25Y(2)O(3) ferritic steels fabricated by spark plasma sintering

    Get PDF
    Ferritic steels strengthened with Ti-Y-O nanoclusters are leading candidates for fission and fusion reactor components. A Fe-14Cr-0.4Ti + 0.25Y2O3 (14YT) alloy was fabricated by mechanical alloying and subsequently consolidated by spark plasma sintering (SPS). The densification of the 14YT alloys significantly improved with an increase in the sintering temperature. Scanning electron microscopy and electron backscatter diffraction revealed that 14YT SPS-sintered at 1150 °C under 50 MPa for 5 min had a high density (99.6%), a random grain orientation and a bimodal grain size distribution (<500 nm and 1-20 μm). Synchrotron X-ray diffraction patterns showed bcc ferrite, Y2Ti2O7, FeO, and chromium carbides, while transmission electron microscopy and atom probe tomography showed uniformly dispersed Y2Ti2O7 nanoclusters of <5 nm diameter and number density of 1.04 × 1023 m-3. Due to the very much shorter consolidation times and lower pressures used in SPS compared with the more usual hot isostatic pressing routes, SPS is shown to be a cost-effective technique for oxide dispersion strengthened (ODS) alloy manufacturing with microstructural features consistent with the best-performing ODS alloys
    corecore